package com.mdd.common.entity.agreement;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mdd.common.base.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 预授权签约记录
 * {@code @TableName} alipay_auth_order_freeze
 */

@Data
@TableName("alipay_auth_order_freeze")
@EqualsAndHashCode(callSuper = true)
public class  AlipayAuthOrderFreeze extends BaseEntity {
    /**
     * 编号
     */
    @TableId(value="id", type= IdType.AUTO)
    private Long id;
    private String authNo;
    /**
     * 商户授权资金订单号。
     */
    private String outOrderNo;

    /**
     * 商户本次资金操作的请求流水号，用于标示请求流水的唯一性。
     */
    private String outRequestNo;

    /**
     * 订单标题。
     */
    private String orderTitle;

    /**
     * 需要冻结的金额，单位为：元（人民币），精确到小数点后两位。
     * 取值范围：[0.01,100000000.00]
     */
    private BigDecimal amount;

    /**
     * 销售产品码。
     */
    private String productCode;

    /**
     * 收款账户的支付宝用户号。
     */
    private String payeeUserId;

    /**
     * 收款账户的支付宝登录号（email或手机号）。
     */
    private String payeeLogonId;

    /**
     * 预授权订单相对超时时间。从商户客户端请求时间开始计算。
     */
    private Date payTimeout;

    /**
     * 预授权订单相对超时时间。从商户客户端请求时间开始计算。
     */
    private Date timeoutExpress;

    /**
     * 无特殊需要请勿传入；商户可用该参数指定支付渠道。
     * 传入后用户仅能使用列表中的渠道进行支付，目前支持三种渠道，余额宝（MONEY_FUND）、花呗（PCREDIT_PAY）以及芝麻信用（CREDITZHIMA）。与禁用支付渠道不可同时传入
     */
    private String enablePayChannels;

    /**
     * 无特殊需要请勿传入；商户可用该参数禁用支付渠道。
     * 传入后用户不可使用列表中的渠道进行支付，目前支持两种禁用渠道：信用卡快捷（OPTIMIZED_MOTO）、信用卡卡通（BIGAMOUNT_CREDIT_CARTOON）。与可用支付渠道不能同时传入
     */
    private String disablePayChannels;

    /**
     * 无特殊需要请勿传入；买家实名信息。
     * 传入后支付宝会比对买家在支付宝端的实名信息。包含两个可选key：
     * 1.identity_hash，买家姓名拼接身份证号后，使用SHA256摘要方式与UTF8编码后的hash值，返回的十六进制字符串，例如 “张三4566498798498498498498”对应的identity_hash应为“acc2b92ffc5ed9b472faa19748f10045c30434132784f774b00216a56b8841c6”
     * 2.alipay_user_id，买家uid
     */
    private String identityParams;

    /**
     * 业务扩展参数，用于特定业务信息的传递，json格式。
     * 1、category，信用类目，信用预授权场景必传，具体类目信息见https://opendocs.alipay.com/open/10719；
     * 2、serviceId，信用服务id，信用预授权场景必传，需要联系芝麻客服获取，<a href="https://cshall.alipay.com/enterprise/index.htm?sourceId=pc_zhima">...</a>（右上角“有问题点我”进入咨询）；
     * 3、creditExtInfo，信用参数，可选，如有需要请与芝麻约定后传入，信用服务说明见https://opendocs.alipay.com/open/11157/qlsxya
     */
    private String extraParam;

    /**
     * 业务参数，如风控参数outRiskInfo等。
     */
    private String businessParams;

    /**
     * 场景码，用于区分预授权不同业务场景。如：当面预授权通用场景（O2O_AUTH_COMMON_SCENE）、支付宝预授权通用场景（ONLINE_AUTH_COMMON_SCENE）、境外当面预授权通用场景（OVERSEAS_O2O_AUTH_COMMON_SCENE）、境外支付预授权通用场景（OVERSEAS_ONLINE_AUTH_COMMON_SCENE）等
     */
    private String sceneCode;

    /**
     * 标价币种, amount 对应的币种单位。支持澳元：AUD, 新西兰元：NZD, 台币：TWD, 美元：USD, 欧元：EUR, 英镑：GBP, 人民币：CNY
     */
    private String transCurrency;

    /**
     * 商户指定的结算币种。支持澳元：AUD, 新西兰元：NZD, 台币：TWD, 美元：USD, 欧元：EUR, 英镑：GBP
     */
    private String settleCurrency;

    /**
     * 免押受理台模式，使用免押产品必传该字段。根据免押不同业务模式将开通受理台区分三种模式，商家可根据调用预授权冻结接口传入的参数决定该笔免押订单选择哪种受理台模式。不同受理台模式需要传入不同参数，其中：POSTPAY 表示后付金额已知，POSTPAY_UNCERTAIN 表示后付金额未知，DEPOSIT_ONLY 表示纯免押。
     * 具体规则参考文档：<a href="https://opendocs.alipay.com/b/08tf3t?pathHash=d67d7545">...</a>
     * 枚举值
     * 后付金额已知: POSTPAY
     * 后付金额未知: POSTPAY_UNCERTAIN
     * 纯免押: DEPOSIT_ONLY
     */
    private String depositProductMode;

    /**
     * 用户订单编号
     */
    private Long orderId;

    /**
     * 授权状态：0、预授权待创建 1、预授权订单创建 2、授权冻结成功 3、预授权订单关闭4、预授权订单解冻5、预授权明细撤销6、预授权订单创建失败
     */
    private Integer status;

    /**
     * body
     */
    private String body;
}
